
% 标题，中文
\ctitle{通用网络服务器框架及上层植物识别应用的设计与开发}

% 作者，中文
\cauthor{陈星宇}

% 学科，中文，本科生不需要
\csubject{}

% 学院，专业，班级，中文，本科毕业论文需要
\ccollege{电子与信息学部}
\cmajor{计算机科学与技术}
\cclass{计算机75}

% 设计所在单位，中文，本科毕业论文需要
\corgnization{计算机实验中心}

% 学号
\stunum{2175112000}

% 导师姓名，中文
\csupervisor{王龙翔}

% 关键词，中文。用全角分号「；」分割
% 研究生的应首先从《汉语主题词表》中摘选
\ckeywords{并发服务器；网络通信组件；反向代理；图像识别}

% 提交日期，本科生不需要
\cproddate{\the\year 年\the\month 月}

% 论文类型，中文，本科生不需要
% 从理论研究、应用基础、应用研究、研究报告、软件开发、设计报告、案例分析、调研报告、其它中选择
\ctype{}

% 论文标题，英文
\etitle{Design and Development of Universal Web Server Framework and Upper Layer Plant Identification Application}

% 作者姓名，英文
\eauthor{Chen xingyu}

% 学科，英文，本科生不需要
\esubject{}

% 导师姓名，英文
\esupervisor{Wang longxiang}

% 关键词，英文。用半角分号和一个半角空格「; 」分割
\ekeywords{Concurrent server; Network communication component; Reverse proxy; Image recognition}

% 学科门类，英文
% 从Philosophy（哲学）、Economics（经济学）、Law（法学）、Education（教育学）、Arts（文学）、
%   Science（理学）、Engineering Science（工学）、Medicine（医学）、Management Science（管理学）中选择 
\ecate{}

% 提交日期，英文，本科生不需要
% 应当和 cproddate 保持一致
\eproddate{\monthname{\month}\ \the\year}

% 论文类型，英文，本科生不需要
% 从Theoretical Research（理论研究）、Application Fundamentals（应用基础）、Applied Research（应用研究）、
%   Research Report（研究报告）、Software Development（软件开发）、Design Report（设计报告）、
%   Case Study（案例分析）、Investigation Report（调研报告）、其它（Other）中选择
\etype{}

% 摘要，中文。段间空行
\cabstract{
组件技术一直以来都是软件复用的利器。本文提出的服务端网络通信框架，旨在提供一个具体业务无关（通用的）、底层的、高性能的网络基础组件。框架从系统调用层写起，传输层和IP层直接使用Unix域套接字，每个网络线程基于Linux端I/O复用技术epoll，配合多个工作线程以提供并发能力，向用户屏蔽了底层的网络通信细节。此外，框架还提供了反向代理功能，提供转发请求到应用服务器节点、负载均衡的能力。用户可将具体业务实现于此组件之上，无需关心OSI七层网络模型中传输层及以下所有层。框架目前实现了用于短链接请求的Http协议和用于长链接的WebSocket协议，用户也可以通过相应接口轻易添加自己的应用层协议，达到快速部署的目的。

生活中经常会遇到一些未知名称的常见植物，用户迫切需要方便地获取植物名称及信息。因此，本文基于上述的通用网络组件开发一种图像识别应用程序，该软件通过检测摄像头传入的图像数据，实现图像实时检测，满足相关用户需求。本项目的图像识别部分基于机器学习模型，应用程序客户端基于安卓平台，服务端程序构建于上述通用网络组件之上并与其完全解耦。

}

% 摘要，英文。段间空行
\eabstract{
Component technology has always been a great tool for software reuse. The server network communication framework proposed in this paper aims to provide an independent (general), low-level, high-performance network infrastructure component. The framework is written from the system call layer, the transport layer and the IP layer directly use Unix domain socket, each network thread based on the Linux I/O reuse technology Epoll, with multiple worker threads to provide concurrency ability, shielding the users from the underlying network communication details. In addition, the framework provides a reverse proxy capability, which aims to forward requests to application server nodes and load balancing. One can implement specific services on top of this component without caring about the transport layer and all the layers below in the OSI seven-layer network model. At present, the framework implements Http protocol for short link request and WebSocket protocol for long link. Users can also easily add their own application layer protocol through the corresponding interface to achieve the purpose of rapid deployment.

In our daily life, we often encounter some common plants with unknown names, and users urgently need to get the names and information of plants conveniently. Therefore, this paper develop an image recognition application based on the general network components above, the software through the detection of camera incoming image data, image real-time detection, to meet the needs of relevant users. The image recognition part of this project is based on the machine learning model, the client application is based on Android platform, and the server program is built on and fully decoupled from the above common network components.

}
